
package net.sea.commons.util;

import java.io.File;

import net.sea.commons.constants.AppConstants;

/**
 * 快捷方式的工具类
 *
 * @author huachengwu 
 */
public class ShortcutUtils {
	/**
	 * 创建快捷方式脚本
	 * 
	 * @param oriFile
	 *            源文件
	 * @param lnkFile
	 *            快捷方式文件
	 * @param icon
	 *            快捷方式图标,图标所在库及索引,由逗号分隔,可选.如:
	 *            "c:\windows\system32\notepad.exe,0"
	 * @return 脚本地址
	 */
	public static String createShortcutScript(String oriFile, String lnkFile,
			String icon) {
		// 创建开始菜单的目录
		File lnk = new File(lnkFile);
		File parentFile = lnk.getParentFile();
		if (parentFile != null && (!parentFile.exists())) {
			parentFile.mkdirs();
		}
		StringBuffer script = new StringBuffer();
		// VB脚本
		String lineSeperator = System.getProperty("line.separator");
		script.append("Dim WshShell,Shortcut").append(lineSeperator)
				.append("Dim path,fso").append(lineSeperator).append("path=\"")
				.append(StringUtils.isEmpty(oriFile) ? "" : oriFile)
				.append("\"").append(lineSeperator)
				.append("Set fso=CreateObject(\"Scripting.FileSystemObject\")")
				.append(lineSeperator)
				.append("Set WshShell=WScript.CreateObject(\"WScript.Shell\")")
				.append(lineSeperator)
				.append("Set Shortcut=WshShell.CreateShortCut(\"")
				.append(StringUtils.isEmpty(lnkFile) ? "" : lnkFile)
				.append("\")").append(lineSeperator)
				.append("Shortcut.IconLocation=\"")
				.append(StringUtils.isEmpty(icon) ? "" : icon).append("\"")
				.append(lineSeperator).append("Shortcut.TargetPath=path")
				.append(lineSeperator).append("Shortcut.Save");
		File f = new File(AppConstants.SYSTEM_PATH + "/temp.vbs");
		FileUtils.wirte(script.toString(), f);
		return f.getAbsolutePath();
	}

	/**
	 * 执行快捷方式创建脚本
	 * 
	 * @param scriptFile
	 *            脚本地址
	 */
	public static void exectue(String scriptFile) {
		ShellUtils.callCmd(scriptFile);
		new File(scriptFile).delete();
	}

	/**
	 * 创建URL类型的快捷方式
	 * 
	 * @param file
	 *            快捷方式文件地址
	 * @param url
	 *            打开地址
	 * @param icon
	 *            图标
	 */
	public static void createUrlShortcut(String file, String url, String icon) {
		String os = System.getProperty("os.name").toLowerCase();
		if (os.indexOf("window") < 0) {
			return;
		}

		StringBuffer content = new StringBuffer();

		// 写入url位置
		content.append("[InternetShortcut]\nUrl=" + url);
		// 写入ico文件的位置
		content.append("\nIconIndex=0\nIconFile=" + icon);
		FileUtils.wirte(content.toString(), new File(file));
	}
}

/*
 * 修改历史 $Log$
 */